﻿namespace Guru.Framework.Management
{
    using Guru.Framework.Base;
    using Guru.Framework.DBConnection;
    using Guru.Framework.QueryBuilding;
    using System;

    /// <summary>
    /// Interface for defining DbManager operations.
    /// </summary>
    public interface IDbManager : IConnectionOperations, IDisposable
    {
        /// <summary>
        /// Returns QueryBuilder object with with given parameters.
        /// </summary>
        /// <param name="queryType"> Query type for QueryBuilder </param>
        /// <param name="tableObject"> IBaseBO object </param>
        /// <returns> QueryBuilder object</returns>
        QueryBuilder CreateQueryBuilder(QueryTypes queryType, AbstractBaseBO tableObject);

        /// <summary>
        /// Returns Connection Type of IDbManager.
        /// </summary>
        ConnectionTypes ConnectionType { get; }

    }
}
